#ifndef __CPPTUTOROVERLOADINGBINARYOPERATOR_H__
#define __CPPTUTOROVERLOADINGBINARYOPERATOR_H__

#include "cppTutorGlobals.h"

using namespace std;

class CcppTutorOverloadingBinaryOperator
{
    private:
        int m_nValueA, m_nValueB;
        bool m_bValueA, m_bValueB;
        int *m_npValue;
    public:
        CcppTutorOverloadingBinaryOperator ();
        CcppTutorOverloadingBinaryOperator (int, int, bool, bool);
       ~CcppTutorOverloadingBinaryOperator ();

        void m_DisplayValue ();

    #ifdef BINARY_OVERLOADING_OPERATOR_USING_FRIEND
        friend CcppTutorOverloadingBinaryOperator operator + (const CcppTutorOverloadingBinaryOperator& obo1, 
                                                               const CcppTutorOverloadingBinaryOperator& obo2);
        friend CcppTutorOverloadingBinaryOperator operator - (const CcppTutorOverloadingBinaryOperator& obo1, 
                                                              const CcppTutorOverloadingBinaryOperator& obo2);
    #else
        CcppTutorOverloadingBinaryOperator& operator + (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator - (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator * (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator / (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator % (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator ^ (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator & (const CcppTutorOverloadingBinaryOperator& obo1);
        CcppTutorOverloadingBinaryOperator& operator += (const CcppTutorOverloadingBinaryOperator& obo1);
    #endif // BINARY_OVERLOADING_OPERATOR_USING_FRIEND

};

#endif //__CPPTUTOROVERLOADINGBINARYOPERATOR_H__
